草庐IT

Linux IO重定向和管道

全部标签

c++ - 如何在 Windows 中访问继承的匿名管道 HANDLE,而不是 stdout、stderr 和 stdin?

我正在尝试通过Windows中的匿名管道从子进程接收数据。我知道如何使用标准I/O流来执行此操作,但这些被用于其他目的。我也知道如何在Linux或OSX中使用fork()、pipe()和execv()执行此操作。在Windows中,您可以使用CreatePipe()创建管道,并使用SetHandleInformation()使一端不可继承。然后,对于stdout和stderr,您可以将STARTUPINFO和hStdOutput或hStdError设置为CreateProcess()以传递另一端给child。在调用CreateProcess()之后,父级最接近它的是子级管道末端的句柄。

c++ - 命名管道 : ReadFile after ConnectNamedPipe return ERROR_BROKEN_PIPE

我重新激活了我确定在几个月前使用过的代码。它让我发疯,但它不再是了。我在其他问题中找不到答案。在服务器端,我使用创建了一个管道#defineMAX_MESSAGE_LENGTH1024SECURITY_ATTRIBUTESsa;SECURITY_DESCRIPTORsd;InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);SetSecurityDescriptorDacl(&sd,TRUE,static_cast(0),FALSE);sa.nLength=sizeof(sa);sa.lpSecurityDescr

windows - 如何在 Windows 中捕获命名管道流量

我想检查我在两个进程之间使用的命名管道是否安全。尽管许多人说可以嗅探命名管道流量。我没有找到任何具体的方法来捕获命名管道流量。 最佳答案 您可以使用“PipeMonitor”来查看流经Windows命名管道的内容。此外,要限制对命名管道的访问,您可以在调用CreateNamedPipe函数时为命名管道指定安全描述符。安全描述符控制对命名管道的客户端和服务器端的访问。参见MSDNdoc. 关于windows-如何在Windows中捕获命名管道流量,我们在StackOverflow上找到一个

c# - 命名管道 C# 客户端无法连接到 C++ 服务器

我正在尝试让C++应用程序让C#应用程序知道特定操作何时发生。我尝试这样做的方式是通过命名管道。我已经在C++应用程序上设置了一个命名管道服务器,它似乎正在工作(命名管道已创建-它出现在PipeList检索到的列表中)和C#应用程序上的一个命名管道客户端,失败的地方:C#客户端代码的第一行给出“尚未设置管道句柄。您的PipeStream实现是否调用了InitializeHandle?”错误,第2行抛出“访问路径被拒绝”异常。我哪里错了?C++服务器代码CStringnamedPipeName="\\\\.\\pipe\\TitleChangePipe";HANDLEpipe=Creat

python - 如何将 ffmpeg 的 -progress 选项输出重定向到 stderr?

我现在正在Python3.7.2上为ffmpeg编写自己的包装,并且想使用它的“-progress”选项来读取当前进度,因为它具有高度的机器可读性。问题是ffmpeg的“-progress”选项仅接受作为其参数文件名和url。但是我不想创建额外的文件而不是为此目的设置整个网络服务器。我在谷歌上搜索了很多,但所有“ffmpeg的进度条”项目都只依赖于ffmpeg的通用stderr输出。Stackoverflow和Superuser上的其他答案仅对“-vquiet-stats”感到满意,因为“progress”对于谷歌来说并不是很方便的参数名称,确切地说是这种情况。最好的解决方案是强制ff

在 Windows 上通过管道进行 Java/C++ 通信

我有两个独立的程序,一个用Java,一个用C++,都在Windows上运行。我们需要在两者之间进行双向进程间通信。到目前为止,我们一直在使用这种笨拙的解决方案,即写入文本文件并在另一端读取它们,其中生产者在写入完成后会生成一个.lock文件,而消费者在完成读取后会删除该文件。..就像我说的,尴尬。如果我们在*nix上,我们将在C++上使用使用popen()的管道,在Java端使用RadomAccessFile。看起来效果不错。我们可以在Windows上做什么?我们可以使用命名管道吗?谢谢。 最佳答案 看看谷歌的ProtocolBuf

Windows Azure 开发结构负载平衡器在 DotNetOpenAuth 重定向操作 mvc 2 上崩溃

我已将此错误归因于DotNetOpenAuth(http://www.dotnetopenauth.net/)的重定向操作调用基本上我已经实现了这里的例子http://www.dotnetopenauth.net/developers/code-snippets/programmatic-openid-relying-party/在我的本地运行的应用程序中,我点击了这一行returnrequest.RedirectingResponse.AsActionResult();此时它完成了这个Action,然后azuredevfabric负载均衡器崩溃了。这就是奇怪的地方。如果我逐行调试重定

c++ - 匿名管道

我写了两个使用匿名管道进行通信的小程序。父进程通过为子进程设置标准IO句柄来共享管道句柄://--SetSTARTUPINFOforthespawnedprocess-------------------------ZeroMemory(&m_ChildSI,sizeof(STARTUPINFO));GetStartupInfo(&m_ChildSI);m_ChildSI.dwFlags=STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;m_ChildSI.wShowWindow=SW_HIDE;m_ChildSI.hStdError=m_pipeCh

windows - Sed 不会通过管道传输到文件

我尝试:C:\Users\me\Documents\worknotes\performance\tomcatlogs\livesite\learn>sed-e's/"//g'local07.csv>local07nq.csv但不是输出到文件local07nq.csv,而是输出到控制台。怎么了?我正在使用sed/cygwin/windows。 最佳答案 Windows命令提示符中的引号(至少我使用过的风格)经常有问题。将脚本(s/"//g)放在一个文件中并以这种方式运行它可能会更好:sed-fmyscript.sedlocal07.c

windows - DLL 重定向 - 在 XP 中工作,而不是在 Windows 7 中工作

在WindowsXP上,我为指定的应用程序重定向user32.dll,但在Windows7上使用相同的设置,user32.dll没有被重定向。设置是这样的-一个目录包含:app.exeapp.exe.manifestuser32.dllapp.exe.manifest包含:在WindowsXP上,app.exe从应用程序文件夹加载user32.dll。在Windows7上,app.exe从system32文件夹加载user32.dll。如何让app.exe从Windows7的应用程序文件夹加载user32.dll?MSDNdocs不要提及平台之间在程序集工作方式上的任何差异,但必须存在